package yl.hs.bmipfull.service.system;

import yl.hs.bmipfull.pojo.system.SiteMessageReceiptEntity;
import yl.hs.bmipfull.service.IBaseService;
import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.PageResult;
import yl.hs.bmipfull.viewmodels.system.MsgModel;

import java.util.List;
import java.util.Map;

/**
 * 作用:  站内信息收件信息服务层接口<br/>
 * 创建时间: 2021年05月12日 16时32分18秒 <br/>
 *
 * @author 张凯
 */

public interface ISiteMessageReceiptService extends IBaseService {

    /**
     *  获取信息类型的行数
     * @param pageQuery 条件
     * @param rowNum 行数
     * @param page 页码
     * @return 返回值
     */
    Map<String,Object> getTypeCount(PageQuery pageQuery, int rowNum, int page);
    /**
     * 查询所有站内信息收件信息
     *
     * @return 站内信息收件信息-List-SiteMessageReceiptEntity
     */
    List<SiteMessageReceiptEntity> queryAll();

    /**
     * 查询站内信息收件信息信息
     *
     * @param pageQuery 查询条件 {@link PageQuery}
     * @param rowNum    每页条数
     * @param page      页码
     * @return 站内信息-List-SiteMessageMainEntity
     * @throws Exception 查询条件异常
     */
    PageResult<Map<String,Object>> queryPage(PageQuery pageQuery, int rowNum, int page) throws Exception;
    /**
     * 查询站内信息收件信息信息工地手机app使用接口
     *
     * @param pageQuery 查询条件 {@link PageQuery}
     * @param rowNum    每页条数
     * @param page      页码
     * @return 站内信息-List-SiteMessageMainEntity
     * @throws Exception 查询条件异常
     */
    PageResult<Map<String,Object>> queryPageSite(PageQuery pageQuery, int rowNum, int page,String sn) throws Exception;

    /**
     * 根据站内信息信息编号查询站内信息收件信息
     *
     * @param msgSN 编号
     * @return 站内信息收件信息-SiteMessageReceiptEntity
     */
    List<SiteMessageReceiptEntity> findByMsgSN(String msgSN);

    /**
     * 保存站内信息收件信息
     *
     * @param msgModel
     * @return 执行结果-受影响行数-Integer
     * @throws Exception 保存异常
     */
    Integer saveSiteMessageReceipt(MsgModel msgModel) throws Exception;


    /**
     * 根据用户编号查询站内信未读信息
     *
     * @param userSn 用户编号
     * @return 站内接受信息-List<{@link SiteMessageReceiptEntity}/>
     */
    List<SiteMessageReceiptEntity> findByUserSn(String userSn);

    /**
     * 将站内信息收件信息改为已读
     *
     * @param msgSn  站内信息编号
     * @param userSn 用户编号
     * @return 影响行数
     * @throws Exception 写入异常
     */
    Integer receipt(String[] msgSn, String userSn) throws Exception;

    //edit - add :谢景广 21-05-07 09：00

    /***
     * 根据用户编号获取用户未读信息的数量
     * @param userSN 用户编号
     * @return
     */
    Integer queryUnReadMessageCount(String userSN);
}